home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK2.toast / Development Kits / Hardware / Mac OS USB DDK / Examples / USBSampleStorageDriver / StorageClassUTDriverIcons.c < prev    next >
Encoding:
C/C++ Source or Header  |  1999-01-12  |  16.0 KB  |  348 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        StorageClassUTDriverIcons.c
  3.  
  4.     Contains:    All declarations and types that are associated with the 
  5.                 Driver's Drive and Media Icons.
  6.  
  7.     Version:    1.1
  8.  
  9.     Copyright:    © 1998-1999 by Apple Computer, Inc., all rights reserved.
  10.  
  11.     File Ownership:
  12.  
  13.         DRI:                Craig Keithley
  14.  
  15.         Other Contact:        xxx put other contact here xxx
  16.  
  17.         Technology:            USB Drivers
  18.  
  19.     Writers:
  20.  
  21.         (CJK)    Craig Keithley
  22.  
  23.     Change History (most recent first):
  24.  
  25.       <USB2>     1/11/99    CJK        Fix file header
  26.       <USB1>     1/11/99    CJK        first checked in
  27. */
  28. #include <DriverServices.h>
  29. #include <Folders.h>
  30.  
  31. #include "StorageClassUTDriverIcons.h"
  32.  
  33. IconFamilyPtr        CartridgeMediaIconFamily;
  34. IconFamilyHandle    FloppyMediaIconFamily;
  35.  
  36. // The IconRef is used for getting the Floppy family of Icons from the system
  37. static     IconRef  theFloppyIconRef;
  38.  
  39. // This is the black and white Apple Floppy icon and mask for use in
  40. // systems where the IconServicesLib isn't present
  41. DiskIcon AppleFloppyMediaIcon =    
  42. {
  43.     0x7FFF, 0xFFF0, 0x8080, 0x0208, 0x8080, 0xE204, 0x8081, 0x1202,
  44.     0x8081, 0x1202, 0x8081, 0x1202, 0x8081, 0x1202, 0x8081, 0x1202,
  45.     0x8080, 0xE202, 0x8080, 0x0202, 0x807F, 0xFC02, 0x8000, 0x0002,
  46.     0x8000, 0x0002, 0x8000, 0x0002, 0x8000, 0x0002, 0x87FF, 0xFFC2,
  47.     0x8800, 0x0022, 0x8800, 0x0022, 0x8800, 0x0022, 0x8800, 0x0022,
  48.     0x8800, 0x0022, 0x8800, 0x0022, 0x8800, 0x0022, 0x8800, 0x0022,
  49.     0x8800, 0x0022, 0x8800, 0x0022, 0x8800, 0x0022, 0x8800, 0x0022,
  50.     0x8800, 0x0022, 0x8800, 0x0022, 0x8800, 0x0022, 0x7FFF, 0xFFFC,
  51.  
  52.     /*************************  MASK  ****************************/
  53.     0x7FFF, 0xFFF0, 0xFFFF, 0xFFF8, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFE,
  54.     0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE,
  55.     0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE,
  56.     0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE,
  57.     0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE,
  58.     0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE,
  59.     0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE,
  60.     0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0x7FFF, 0xFFFC
  61. };
  62.  
  63. // The following structures are all used by the driver in systems
  64. // that support the color icons by use of the IconServicesLib
  65.  
  66. // This is the Large 1 bit Cartridge icon and mask, this is also used in
  67. // systems where the IconServicesLib isn't present
  68. DiskIcon CartridgeIcon =        //cartridge icon
  69. {
  70.     0x0000, 0x0000, 0x3BFF, 0xFFF0, 0x4440, 0x0108, 0x8440, 0x0104,
  71.     0x8441, 0xE104, 0x8441, 0x2104, 0x8441, 0x2104, 0x8441, 0x2104,
  72.     0x8441, 0x2104, 0x8441, 0xE104, 0x8440, 0x0104, 0x8440, 0x0104,
  73.     0x8440, 0x0104, 0x8440, 0x0104, 0x8440, 0x0104, 0x8440, 0x0104,
  74.     0x8440, 0x0104, 0x847F, 0xFF04, 0x8400, 0x0104, 0x8400, 0x0104,
  75.     0x8400, 0x0104, 0x8400, 0x0104, 0x8400, 0x0104, 0x8400, 0x0104,
  76.     0x8400, 0x0104, 0x8400, 0x0104, 0x8400, 0x0106, 0x8400, 0x0107,
  77.     0x8400, 0x0107, 0x8400, 0x0107, 0x8400, 0x0107, 0x7FFF, 0xFFFE,
  78.     
  79.     /*************************  MASK  ****************************/
  80.     0x0000, 0x0000, 0x3BFF, 0xFFF0, 0x7FFF, 0xFFF8, 0xFFFF, 0xFFFC,
  81.     0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC,
  82.     0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC,
  83.     0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC,
  84.     0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC,
  85.     0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC,
  86.     0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFF,
  87.     0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x7FFF, 0xFFFE
  88. };
  89.  
  90. // This is the Large 4 bit Cartridge icon
  91. UInt16 Media_icl4[] = 
  92. {
  93.     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  94.     0x00FF, 0xF0AF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000,
  95.     0x0F00, 0x0DCC, 0xCA00, 0x0000, 0x0000, 0x0CA0, 0x000C, 0xF000,
  96.     0xF00C, 0xCDCC, 0xCD0C, 0x0C0C, 0xCCCC, 0xCCD0, 0xCCCC, 0xDF00,
  97.     0xF0CC, 0xCDCC, 0xCD00, 0xC00E, 0xEEE0, 0xCCD0, 0xCCCC, 0xDF00,
  98.     0xF0CC, 0xCDCC, 0xCD0C, 0x0C0E, 0xDDD0, 0xCCD0, 0xCCCC, 0xDF00,
  99.     0xF0CC, 0xCDCC, 0xCD00, 0xCC0E, 0xDDD0, 0xCCD0, 0xCCCC, 0xDF00,
  100.     0xF0CC, 0xCDCC, 0xCD0C, 0xCC0E, 0xDDD0, 0xCCD0, 0xCCCC, 0xDF00,
  101.     0xF0CC, 0xCDCC, 0xCD0C, 0xCC0E, 0xDDD0, 0xCCD0, 0xCCCC, 0xDF00,
  102.     0xF0CC, 0xCDCC, 0xCD0C, 0xCC0E, 0xDDD0, 0xCCD0, 0xCCCC, 0xDF00,
  103.     0xF0CC, 0xCDCC, 0xCD0C, 0xCC00, 0x0000, 0xCCD0, 0xCCCC, 0xDF00,
  104.     0xF0CC, 0xCDCC, 0xCD0C, 0xCCCC, 0xCCCC, 0xCCD0, 0xCCCC, 0xDF00,
  105.     0xF0CC, 0xCDCC, 0xCD0C, 0xCCCC, 0xCCCC, 0xCCD0, 0xCCCC, 0xDF00,
  106.     0xF0CC, 0xCDCC, 0xCD0C, 0xCCCC, 0xCCCC, 0xCCD0, 0xCCCC, 0xDF00,
  107.     0xF0CC, 0xCDCC, 0xCD0C, 0xCCCC, 0xCCCC, 0xCCD0, 0xCCCC, 0xDF00,
  108.     0xF0CC, 0xCDCC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCD0, 0xCCCC, 0xDF00,
  109.     0xF0CC, 0xCDCC, 0xCDDD, 0xDDDD, 0xDDDD, 0xDDE0, 0xCCCC, 0xDF00,
  110.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  111.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  112.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  113.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  114.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  115.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  116.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  117.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  118.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  119.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDFA0,
  120.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDFAA,
  121.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDFAA,
  122.     0xF00C, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDFAA,
  123.     0xFDDD, 0xDDDD, 0xDDDD, 0xDDDD, 0xDDDD, 0xDDDC, 0xDDDD, 0xDFAA,
  124.     0x0FFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFAA0
  125. };
  126.  
  127. // This is the Large 8 bit Cartridge icon
  128. UInt16 Media_icl8[] =
  129. {
  130.     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  131.     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  132.     0x0000, 0xFFFF, 0xFF00, 0xFDFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  133.     0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000,
  134.     0x00FF, 0x0000, 0x00FA, 0xF6F6, 0xF6FD, 0x0000, 0x0000, 0x0000,
  135.     0x0000, 0x0000, 0x00F6, 0xFD00, 0x00F5, 0xF52B, 0xFF00, 0x0000,
  136.     0xFF00, 0x00F6, 0xF6FA, 0xF8F8, 0xF8F9, 0x00F6, 0x00F6, 0x00F6,
  137.     0xF6F6, 0xF6F6, 0xF6F6, 0xFA00, 0xF62B, 0xF7F8, 0xF9FF, 0x0000,
  138.     0xFF00, 0xF62B, 0x2BFA, 0xF8F8, 0xF8F9, 0x0000, 0xF600, 0x00FB,
  139.     0xFBFB, 0xFB00, 0xF6F6, 0xFA00, 0x2BF7, 0xF7F8, 0xF9FF, 0x0000,
  140.     0xFF00, 0xF6F7, 0x2BFA, 0xF8F8, 0xF8F9, 0x00F6, 0x00F6, 0x00FB,
  141.     0xF9F9, 0xF900, 0xF6F6, 0xFA00, 0x2BF7, 0xF7F8, 0xF9FF, 0x0000,
  142.     0xFF00, 0xF7F7, 0xF7FA, 0xF8F8, 0xF8F9, 0x0000, 0xF6F6, 0x00FB,
  143.     0xF9F9, 0xF900, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  144.     0xFF00, 0x2BF7, 0xF7FA, 0xF8F8, 0xF8F9, 0x00F6, 0xF6F6, 0x00FB,
  145.     0xF9F9, 0xF900, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  146.     0xFF00, 0x2BF7, 0xF7FA, 0xF8F8, 0xF8F9, 0x00F6, 0xF6F6, 0x00FB,
  147.     0xF9F9, 0xF900, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  148.     0xFF00, 0x2BF7, 0xF7FA, 0xF8F8, 0xF8F9, 0x00F6, 0xF6F6, 0x00FB,
  149.     0xF9F9, 0xF900, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  150.     0xFF00, 0x2BF7, 0xF7FA, 0xF8F8, 0xF8F9, 0x00F6, 0xF6F6, 0x0000,
  151.     0x0000, 0x0000, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  152.     0xFF00, 0x2BF7, 0xF7FA, 0xF8F8, 0xF8F9, 0x00F6, 0xF6F6, 0xF6F6,
  153.     0xF6F6, 0xF6F6, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  154.     0xFF00, 0x2BF7, 0xF7FA, 0xF8F8, 0xF8F9, 0x00F6, 0xF6F6, 0xF6F6,
  155.     0xF6F6, 0xF6F6, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  156.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F9, 0x00F6, 0xF6F6, 0xF6F6,
  157.     0xF6F6, 0xF6F6, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  158.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F9, 0x00F6, 0xF6F6, 0xF6F6,
  159.     0xF6F6, 0xF6F6, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  160.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F9, 0xF7F6, 0xF6F6, 0xF6F6,
  161.     0xF6F6, 0xF6F6, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  162.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F9, 0xFAFA, 0xFAFA, 0xFAFA,
  163.     0xFAFA, 0xFAFA, 0xFAFA, 0xFB00, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  164.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  165.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  166.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  167.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  168.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  169.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  170.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  171.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  172.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  173.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  174.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  175.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  176.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  177.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  178.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  179.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  180.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  181.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  182.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  183.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF7F8, 0xF7F8, 0xF9FF, 0xFD00,
  184.     0xFF00, 0xF7F7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  185.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF7F8, 0xF7F8, 0xF9FF, 0xFDFD,
  186.     0xFF00, 0xF7F7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  187.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF7F8, 0xF7F8, 0xF9FF, 0xFDFD,
  188.     0xFF00, 0xF5F7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  189.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF7F8, 0xF7F8, 0xF9FF, 0xFDFD,
  190.     0xFFF9, 0xF9F9, 0xF9FA, 0xF9F9, 0xF9F9, 0xF9F9, 0xF9F9, 0xF9F9,
  191.     0xF9F9, 0xF9F9, 0xF9F9, 0xF92B, 0xF9F9, 0xF9F9, 0xF9FF, 0xFDFD,
  192.     0x00FF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  193.     0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFD, 0xFD00
  194. };
  195.  
  196. // This is the small 1 bit Cartridge icon and mask
  197. UInt16 Media_ics1[] =
  198. {
  199.     0x7FFC, 0xA812, 0xA9D2, 0xA952, 0xA9D2, 0xA812, 0xA812, 0xA812,
  200.     0xAFF2, 0xA012, 0xA012, 0xA012, 0xA012, 0xA013, 0xA013, 0xFFFF,
  201.     0x7FFC, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE,
  202.     0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF
  203. };
  204.  
  205. // This is the small 4 bit Cartridge icon
  206. UInt16 Media_ics4[] = 
  207. {
  208.     0x0FFF, 0xFFFF, 0xFFFF, 0xFF00, 0xFCDC, 0xDCCC, 0xCCCD, 0xCCF0,
  209.     0xFCDC, 0xDCCE, 0xEECD, 0xCCF0, 0xFCDC, 0xDCCE, 0xDDCD, 0xCCF0,
  210.     0xFCDC, 0xDCCE, 0xDDCD, 0xCCF0, 0xFCDC, 0xDCCC, 0xCCCD, 0xCCF0,
  211.     0xFCDC, 0xDCCC, 0xCCCD, 0xCCF0, 0xFCDC, 0xDCCC, 0xCCCD, 0xCCF0,
  212.     0xFCDC, 0xDDDD, 0xDDDE, 0xCCF0, 0xFCDC, 0xCCCC, 0xCCCC, 0xCCF0,
  213.     0xFCDC, 0xCCCC, 0xCCCC, 0xCCF0, 0xFCDC, 0xCCCC, 0xCCCC, 0xCCF0,
  214.     0xFCDC, 0xCCCC, 0xCCCC, 0xCCF0, 0xFCDC, 0xCCCC, 0xCCCC, 0xCCFA,
  215.     0xFCDC, 0xCCCC, 0xCCCC, 0xCCFA, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFA
  216. };
  217.  
  218. // This is the small 8 bit Cartridge icon
  219. UInt16 Media_ics8[] =
  220. {
  221.     0x00FF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000,
  222.     0xFFF6, 0xFAF8, 0xFDF6, 0xF6F6, 0xF6F6, 0xF6FD, 0xF6F8, 0xFF00,
  223.     0xFFF7, 0xFAF8, 0xF9F6, 0xF6FB, 0xFBFB, 0xF6FA, 0xF7F8, 0xFF00,
  224.     0xFFF7, 0xFAF8, 0xF9F6, 0xF6FB, 0xF9F9, 0xF6FA, 0xF7F8, 0xFF00,
  225.     0xFFF7, 0xFAF8, 0xF9F6, 0xF6FB, 0xF9F9, 0xF6FA, 0xF7F8, 0xFF00,
  226.     0xFFF7, 0xFAF8, 0xF9F6, 0xF6F6, 0xF6F6, 0xF6FA, 0xF7F8, 0xFF00,
  227.     0xFFF7, 0xFAF8, 0xF9F6, 0xF6F6, 0xF6F6, 0xF6FA, 0xF7F8, 0xFF00,
  228.     0xFFF7, 0xFAF7, 0xF9F7, 0xF6F6, 0xF6F6, 0xF6FA, 0xF7F8, 0xFF00,
  229.     0xFFF7, 0xFAF7, 0xF9FA, 0xFAFA, 0xFAFA, 0xFAFB, 0xF8F8, 0xFF00,
  230.     0xFFF7, 0xFAF7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF8F8, 0xFF00,
  231.     0xFFF7, 0xFAF7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF8F8, 0xFF00,
  232.     0xFFF7, 0xFAF7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF8F8, 0xFF00,
  233.     0xFFF7, 0xFAF7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF8F8, 0xFF00,
  234.     0xFFF7, 0xFAF7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF8F8, 0xFFFD,
  235.     0xFFF7, 0xFAF7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF8F8, 0xFFFD,
  236.     0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFD
  237. };
  238. // The IconServicesLib also supports 32 bit color icons with 8 bit masks,
  239. // but currently this driver does not include the icons for this style.
  240.  
  241. void BuildMediaIconFamily( void )
  242. {
  243.     UInt32                 sizeOfFamily;
  244.     UInt32                 elementOffset = 0;
  245.     OSErr                err;
  246.     IconFamilyElement     *CartridgeMedia_ICN1;
  247.     IconFamilyElement    *CartridgeMedia_icl4;
  248.     IconFamilyElement    *CartridgeMedia_icl8;
  249.     IconFamilyElement     *CartridgeMedia_ics1;
  250.     IconFamilyElement     *CartridgeMedia_ics4; 
  251.     IconFamilyElement     *CartridgeMedia_ics8;
  252.  
  253.     // Check to see if the IconServices Library was imported by checking
  254.     // if the address of the GetIconRef call is nil, if it is don't do any
  255.     // of the IconServices calls
  256.     if(GetIconRef==nil)
  257.     {
  258.         FloppyMediaIconFamily = nil;
  259.         CartridgeMediaIconFamily = nil;
  260.         return;
  261.     }
  262.     
  263.     // Set up the Floppy Icon Family
  264.     err = GetIconRef(kOnSystemDisk, kSystemIconsCreator, kGenericFloppyIcon, &theFloppyIconRef);
  265.     if ( err == noErr )
  266.     {
  267.         err = IconRefToIconFamily (theFloppyIconRef, kSelectorAllAvailableData, &FloppyMediaIconFamily);
  268.     }
  269.     else
  270.     {
  271.         FloppyMediaIconFamily = nil;
  272.     }
  273.  
  274.     // Calculate the size of the Cartridge icon Family resource
  275.     sizeOfFamily = (sizeof(IconFamilyResource) - sizeof(IconFamilyElement)) + ((sizeof(OSType) + sizeof(Size)) * 6 ) + sizeof(CartridgeIcon) 
  276.                     + sizeof(Media_icl4) + sizeof(Media_icl8) + sizeof(Media_ics1) + sizeof(Media_ics4) + sizeof(Media_ics8);
  277.  
  278.     CartridgeMediaIconFamily = (IconFamilyPtr) PoolAllocateResident(sizeOfFamily, true);
  279.     if(CartridgeMediaIconFamily == nil)
  280.     {
  281.         return;
  282.     }
  283.     
  284.     // Set up the Icon family structure
  285.     CartridgeMediaIconFamily->resourceType = kIconFamilyType;
  286.     CartridgeMediaIconFamily->resourceSize = sizeOfFamily;
  287.  
  288.     // Set up the one bit small icon and mask
  289.     elementOffset = 0; 
  290.     CartridgeMedia_ics1 = (IconFamilyElement *) &CartridgeMediaIconFamily->elements;
  291.     CartridgeMedia_ics1->elementType = kSmall1BitMask;
  292.     CartridgeMedia_ics1->elementSize = (sizeof(OSType) + sizeof(Size)) + sizeof(Media_ics1);
  293.     BlockMove(&Media_ics1, &CartridgeMedia_ics1->elementData[0], sizeof(Media_ics1));
  294.  
  295.     // Set up the four bit color small icon
  296.     elementOffset += CartridgeMedia_ics1->elementSize; 
  297.     CartridgeMedia_ics4 = (IconFamilyElement *)(((UInt32) &CartridgeMediaIconFamily->elements) + elementOffset);
  298.     CartridgeMedia_ics4->elementType = kSmall4BitData;
  299.     CartridgeMedia_ics4->elementSize = (sizeof(OSType) + sizeof(Size)) + sizeof(Media_ics4);
  300.     BlockMove(&Media_ics4, &CartridgeMedia_ics4->elementData[0], sizeof(Media_ics4));
  301.  
  302.     // Set up the 8 bit color small icon
  303.     elementOffset += CartridgeMedia_ics4->elementSize; 
  304.     CartridgeMedia_ics8 = (IconFamilyElement *)(((UInt32) &CartridgeMediaIconFamily->elements) + elementOffset);
  305.     CartridgeMedia_ics8->elementType = kSmall8BitData;
  306.     CartridgeMedia_ics8->elementSize = (sizeof(OSType) + sizeof(Size)) + sizeof(Media_ics8);
  307.     BlockMove(&Media_ics8, &CartridgeMedia_ics8->elementData[0], sizeof(Media_ics8));
  308.     
  309.     // Set up the one bit Large icon and mask
  310.     elementOffset += CartridgeMedia_ics8->elementSize; 
  311.     CartridgeMedia_ICN1 = (IconFamilyElement *)(((UInt32) &CartridgeMediaIconFamily->elements) + elementOffset);
  312.     CartridgeMedia_ICN1->elementType = kLarge1BitMask;
  313.     CartridgeMedia_ICN1->elementSize = (sizeof(OSType) + sizeof(Size)) + sizeof(CartridgeIcon);
  314.     BlockMove(&CartridgeIcon, &CartridgeMedia_ICN1->elementData[0], sizeof(CartridgeIcon));
  315.  
  316.     // Set up the four bit color Large icon
  317.     elementOffset += CartridgeMedia_ICN1->elementSize; 
  318.     CartridgeMedia_icl4 = (IconFamilyElement *)(((UInt32) &CartridgeMediaIconFamily->elements) + elementOffset);
  319.     CartridgeMedia_icl4->elementType = kLarge4BitData;
  320.     CartridgeMedia_icl4->elementSize = (sizeof(OSType) + sizeof(Size)) + sizeof(Media_icl4);
  321.     BlockMove(&Media_icl4, &CartridgeMedia_icl4->elementData[0], sizeof(Media_icl4));
  322.  
  323.     // Set up the 8 bit color Large icon
  324.     elementOffset += CartridgeMedia_icl4->elementSize; 
  325.     CartridgeMedia_icl8 = (IconFamilyElement *)(((UInt32) &CartridgeMediaIconFamily->elements) + elementOffset);
  326.     CartridgeMedia_icl8->elementType = kLarge8BitData;
  327.     CartridgeMedia_icl8->elementSize = (sizeof(OSType) + sizeof(Size)) + sizeof(Media_icl8);
  328.     BlockMove(&Media_icl8, &CartridgeMedia_icl8->elementData[0], sizeof(Media_icl8));
  329. }
  330.  
  331. // Release the icons and any memory that is used by them
  332. void DestroyMediaIconFamily( void )
  333. {
  334.     if ( CartridgeMediaIconFamily != nil)
  335.     {
  336.         PoolDeallocate(CartridgeMediaIconFamily);
  337.     }
  338.     
  339.     CartridgeMediaIconFamily = nil;
  340.     
  341.     if ( FloppyMediaIconFamily != nil )
  342.     {
  343.         ReleaseIconRef(theFloppyIconRef);
  344.     }
  345.  
  346.     FloppyMediaIconFamily = nil;
  347. }
  348.